#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 1.sys.path.append("/root/mods")的作用？
"""
添加一个python导入模块的默认路径
"""

# 2.字符串如何进行反转？
"""
str[::-1]
"""

# 3.不用中间变量交换a和b的值。
"""
a = 1
b = 2
a, b = b, a
"""

# 4.*args和**kwargs这俩参数是什么意思？我们为什么要用它。

"""
*args能接受无限个位置参数
**kwargs能接收无线个关键字参数
因为他们可以接收未知数量的参数。
"""

# 5.函数的参数传递是地址还是新值？
"""
地址
"""

# 6.看代码写结果：
"""
my_dict = {'a':0,'b':1}
def func(d):
    d['a'] = 1
    return d

func(my_dict)
my_dict['c'] = 2
print(my_dict) # {'a':1,'b':1,'c':2}
"""

# 7.什么是lambda表达式
"""
lambda被称为匿名函数，匿名函数不管命令有多复杂，函数内都只可以执行一行语句。
"""

# 8.range和xrang有什么不同？
"""
在python2中range会直接在内存中添加一个列表，可以直接引用。
    xrange则是在循环的时候才可以被引用。
在python3中没有xrange，只有range，但python3中的range和python2中的xrange相同。
"""

# 9."1,2,3" 如何变成 ['1','2','3',]
"""
s = '1,2,3'
s2 = s.split(','）
"""

# 10.['1','2','3'] 如何变成 [1,2,3]
"""
ls = ['1','2','3']
ls2 = list()
for i in ls:
    ls.append(int(i))
"""

# 11.def f(a,b=[]) 这种写法有什么陷阱？
"""
当函数内部对列表b进行操作的时候，如果第二个参数传入的不是列表，这个值将被保存在列表b中，下次在使用此函数数据可能不准确。
"""

# 12.如何生成列表 [1,4,9,16,25,36,49,64,81,100] ，尽量用一行实现。
"""
ls = [x ** 2 for x in range(1, 11)]
"""

# 13.python一行print出1~100偶数的列表, (列表推导式, filter均可)
"""
print([i for i in range(1, 101) if i % 2 == 0])
"""
"""
print(list(filter(lambda x: x % 2 == 0, range(1, 101))))
"""

# 14.把下面函数改成lambda表达式形式
"""
def func():
    result = []
    for i in range(10):
        if i % 3 == 0:
            result.append(i)
    return result 
"""
"""
func = lambda: [i for i in range(10) if i % 3 == 0]
"""

# 15.如何用Python删除一个文件？
"""
import shutil

shutil.rmtree(r'g:\code\project1\remove')
"""

# 16.如何对一个文件进行重命名？
"""
import os

os.rename(r'g:\code\project1\rename.py', r'g:\code\project1\rename\rename2.py')
"""

# 17.python如何生成随机数？
"""
import random

print(random.randrange(10))
"""

# 18.从0-99这100个数中随机取出10个数，要求不能重复，可以自己设计数据结构。
"""
import random

s = set()
while True:
    s.add(random.randrange(100))
    if len(s) == 10:
        print(s)
        break
"""

# 19.用Python实现 9*9 乘法表 （两种方式）
"""
for i in range(1, 10):
    for j in range(1,i+1):
        print('%s*%s=%s' % (i, j, i * j), end=' ')
    print()
"""
# 网上抄的
"""
print('\n'.join([' '.join(['%s*%s=%s' % (i, j, i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))
"""
# 20.请给出下面代码片段的输出并阐述涉及的python相关机制。
"""
def dict_updater(k,v,dic={}):
    dic[k] = v
    print(dic)
dict_updater('one',1) # {'one':1}   第一次空字典不会有影响，但会把键值保留在这个字典中。
dict_updater('two',2) # {'one':1, 'tow':2}  第二次传入数据的时候会继续上次执行函数时保存的键值继续添加。
dict_updater('three',3,{}) {'three': 3} 因为传入了一个空字典，所以将原来的默认字典替换了。所以没有继承之前的键值。
"""

# 21.写一个装饰器出来。
"""
def func1(func):
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner

@func1
def func(*args, **kwargs):
    print(args)
"""

# 22.用装饰器给一个方法增加打印的功能。
"""
def func1(func):
    def inner(*args, **kwargs):
        print('我是装饰器')
        return func(*args, **kwargs)
    return inner

@func1
def func(*args, **kwargs):
    print(args)
"""

# 23.as 请写出log实现(主要功能时打印函数名)
"""
from functools import wraps


def log(func):
    @wraps(func)
    def inner(*args, **kwargs):
        print("call", func.__name__)
        return func(*args, **kwargs)
    return inner

@log
def now():
    print("2013-12-25")


now()

# 输出
# call now()
# 2013-12-25
"""

# 24.向指定地址发送请求，将获取到的值写入到文件中。
"""
import requests  # 需要先安装requests模块：pip install requests
import json

response = requests.get('https://www.luffycity.com/api/v1/course_sub/category/list/')
print(response.text)
v = json.loads(response.text)
with open('catelog.txt', 'w', encoding='utf-8') as f:
    for i in v['data']:
        f.write('%s,' % i['name'])

# 获取结构中的所有name字段，使用逗号链接起来，并写入到 catelog.txt 文件中。
"""

"""
[
    {'id': 1, 'name': 'Python', 'hide': False, 'category': 1}, 
    {'id': 2, 'name': 'Linux运维', 'hide': False, 'category': 4}, 
    {'id': 4, 'name': 'Python进阶', 'hide': False, 'category': 1}, 
    {'id': 7, 'name': '开发工具', 'hide': False, 'category': 1}, 
    {'id': 9, 'name': 'Go语言', 'hide': False, 'category': 1},
    {'id': 10, 'name': '机器学习', 'hide': False, 'category': 3}, 
    {'id': 11, 'name': '技术生涯', 'hide': False, 'category': 1}
]
"""
# 25.请列举经常访问的技术网站和博客
"""
github/博客园/码云/CSDN/51CTO
"""
# 26.请列举最近在关注的技术
"""
人工智能/5G/物联网/AR/VR
"""

# 27.请列举你认为不错的技术书籍和最近在看的书（不限于技术）
"""
编码：隐匿在计算机软硬件背后的语言
"""
